package main

import "fmt"

func main()  {

	var s1 []int

	s1 = []int{1,2,3}
	fmt.Println(s1)

	s2 := [...]string{"", "2", "a"}
	fmt.Println(s2, cap(s2), len(s2))

	// 由数组到切片

	//cap容量是指底层数组的容量，从切片指向的第一个元素到最后
	a1 := []int{1,2,3,4,5,6,7,8,9,9,90,0}
	s3 := a1[0:4]	// [1 2 3 4]
	s5 := s3[:8]   //动态扩容
	fmt.Println(s3)
	fmt.Println(s5)

	s4 := a1[0:len(a1)]   // 左闭由开
	fmt.Println(s4)
	a1[6] = 14000
	fmt.Println(s4)

	//切片指向了一个底层的数组
	//切片的长度就是它元素的个数
	//切片的容量是底层数组从切片的第一个位置到最后的个数

	//修改底层数组 切片会修改，引用类型
}
